home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 256_01 / abswrite.a < prev    next >
Text File  |  1988-01-06  |  2KB  |  56 lines

  1. ;---------------------------------------------------------------------
  2. ;    ASM88 FILE:     ABSWRITE.A
  3. ;    ----------
  4. ;    WRITTEN:        25/10/87
  5. ;    -------
  6. ;    PURPOSE:        This is one of a series of files which uses
  7. ;    -------         the carry flag being set on return from the 
  8. ;                    function if an error has occurred.
  9. ;                    If so, the error code can be used to obtain
  10. ;                    information about the specific error.
  11. ;
  12. ;    USAGE:          int ABSWRITE(drv, DTA, sectors, first_sector, &_carryf)
  13. ;    -----           char drv, *DTA;
  14. ;                    int sectors, first_sector;
  15. ;                    char *_carryf;
  16. ;
  17. ;    NOTES:          The drive number must be of the form A = 0, B = 1.....
  18. ;    -----           and the Disk Transfer Address (DTA) is a buffer of
  19. ;                    sufficient size to hold the No of sectors written.
  20. ;
  21. ;    DEPENDENCIES:           De Smet C V 2.44+
  22. ;    ------------
  23. ;    Copyright 1987 - Cogar Computer Services Pty. Ltd
  24. ;---------------------------------------------------------------------
  25.  
  26. CSEG
  27. PUBLIC ABSWRITE_
  28.  
  29. ABSWRITE_:
  30.     push    bp    ; normal De Smet C start
  31.     mov    bp,sp    ; point to the stack
  32.     mov    ax,ds    ; and make ES common with DS
  33.     mov    es,ax
  34. ;----------------------------------------------------------------------
  35. ;  The unique programme follows.
  36. ;----------------------------------------------------------------------
  37.     mov    al,byte [bp+4]    ; get the drive code
  38.     mov    bx,[bp+6]    ; get the DTA address
  39.     mov    cx,[bp+8]    ; No. of sectors to read
  40.     mov    dx,[bp+10]    ; the starting sector No.
  41.     int    26h
  42.     jc    ABSWRITE_ERROR
  43.     jmp    ABSWRITE_QUIT
  44. ABSWRITE_ERROR:
  45.     mov    si,[bp+12]    ; get address of '_carryf' variable
  46.     mov    byte [si],1    ; return with _carryf = 1
  47. ;----------------------------------------------------------------------
  48. ;  Normal programme termination.
  49. ;----------------------------------------------------------------------
  50. ABSWRITE_QUIT:
  51.     popf        ; necessary because the call pushes the flags
  52.                 ; when it is first called
  53.     pop    bp    ; restore starting conditions
  54.     ret
  55. ;----------------------------------------------------------------------
  56.